/**********************************************************************************
 * Copyright (c) 2012 - 2012,  ObjectPoolLite, All right reserved
 * Title: com.adc.litepool  PoolableObjectFactory.java 
 * @author shen  shenqiao2012@163.com 
 *  2012-7-31 下午1:43:33 
 *********************************************************************************/

package com.adc.litepool;

/**
 * 
 * Description: 池化对象管理工厂接口PoolableObjectFactory：用于管理对象池中对象的创建、还原、销毁;
 * 
 * @author shen shenqiao2012@163.com
 */
public interface PoolableObjectFactory {

	/**
	 * 生成新对象
	 * 
	 * @param clsType
	 *            对象类型
	 * @return 新对象
	 */
	public Object createObject(Class<?> clsType);

	/**
	 * 对象在使用过程中内部状态会发生变化，当归还对象池时可能需要将对象还原为原始状态
	 * 
	 * @return 将对象还原为原始状态
	 */
	public Object clearObject(Object obj);

	/**
	 * 销毁一个对象
	 * 
	 * @param obj
	 *            要销毁的对象
	 */
	public void destroyObject(Object obj);
}
